/**
 * Promise.resolve()
 * Promise.reject()
 * Promise.all()
 * Promise.race()
 */

// let p1 =Promise.resolve('success')
// console.log(p1);
// p1.then(res=>{
//     console.log(res);
// })
// let p2 =Promise.reject('失败')
// console.log(p1);
// p2.then(res=>{
//     console.log(res);
// },err=>{
//     console.log(err);
// })

// 静态方法
// function foo(tag){
//     if (tag) {
//      return  Promise.resolve('success')
//     }
// }
// foo(true).then(res=>{
//     console.log(res);
// })


// Promise.all()
// let p1 =new Promise((resolve,reject)=>{
//     setTimeout(() => {
//         console.log(1);
//         resolve('1成功')
//     }, 1000);
// })
// let p2 =new Promise((resolve,reject)=>{
//     setTimeout(() => {
//         console.log(2);
//         resolve('2成功')
//         // reject('2失败')

//     }, 2000);
// })
// let p3 =new Promise((resolve,reject)=>{
//     setTimeout(() => {
//         console.log(3);
//         resolve('3成功')

//     }, 3000);
// })
// Promise.all([p1,p2,p3]).then(res=>{
//     console.log(res);
// },err=>{
//     console.log(err);//1 2 2失败 3
// })
// Promise.all这个方法 都成功才会进then，只要有一个失败就会进入catch

// Promise.race
// Promise.race([p1,p2,p3]).then(res=>{
//     console.log(res);
// },err=>{
//     console.log(err);//
// })
// Promise.race 只要有一个成功就会执行

// 应用场景
// const imgArr =['1.jpg','2.jpg']
// let promiseArr=[]
// imgArr.forEach(item=>{
//     promiseArr.push(new Promise((resolve,reject){
//         // 图片上传操作
//         resolve()
//     }))
// })
// Promise.all(promiseArr).then(res=>{
//     // 插入数据库的操作
//     console.log('图片全部上传完毕');
// })

// 应用场景Promise.race
// 如果超过2s图片没显示 提示加载超时
function getImg(){
    return new Promise((resolve,reject)=>{
        let img=new Image()
        img.onload=function(){
            // 图片加载成功后执行
            resolve(img)
        }
        img.src='https://www.runoob.com/wp-content/themes/runoob/assets/images/qrcode.png'
    })
}

function timeout(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            reject('图片请求超时')
        }, 2000);
    })
}
Promise.race([getImg(),timeout()]).then(res=>{
console.log(res);
}).catch(err=>{
    console.log(err);
})
